package com.gdit.zax.utils;

import java.io.File;
import java.util.Iterator;
import java.util.List;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

import com.gdit.zax.Constant;

public class WebUpload {
//	public static final String DefaultSavePath = "userheads";// 默认文件上传的目录
//	public static final String DefaultPic = "head.png";// 默认文件上传的目录

	/**
	 * 提交什么文件就保存什么文件(文件名是提交的文件名)
	 * 
	 * @param sc
	 * @param request
	 * @param response
	 * @return
	 */
	public static boolean upload(ServletContext sc, HttpServletRequest request,
			HttpServletResponse response) {
		boolean result = false;

		DiskFileItemFactory factory = new DiskFileItemFactory();
		ServletFileUpload upload = new ServletFileUpload(factory);
		try {
			List items = upload.parseRequest(request);// 上传文件解析
			Iterator itr = items.iterator();// 枚举方法
			while (itr.hasNext()) {
				FileItem item = (FileItem) itr.next();
				if (item.isFormField()) {// 判断是文件还是文本信息
					// System.out.println("表单参数名:" + item.getFieldName()+
					// "，表单参数值:" + item.getString("UTF-8"));
				} else {
					if (item.getName() != null && !item.getName().equals("")) {// 判断是否选择了文件
						// System.out.println("上传文件的大小:" + item.getSize());
						// System.out.println("上传文件的类型:" +
						// item.getContentType());
						// System.out.println("上传文件的参数:" + item.getFieldName());
						// System.out.println("上传文件的名称:" +
						// item.getName());//返回上传文件在客户端的完整路径名称
						// 此时文件暂存在服务器的内存当中

						File tempFile = new File(item.getName());// 构造临时对象
						File file = new File(sc.getRealPath("/")
								+ "1.jpg", tempFile.getName());
						// 获取根目录对应的真实物理路径
						item.write(file);// 保存文件在服务器的物理磁盘中
						// System.out.println("上传成功");
						result = true;
					} else {
						// System.out.println("没有选择上传文件！");
					}
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
//			 System.out.println("上传失败");
		}
//		 System.out.println("上传end");
		return result;
	}

	/**
	 * fileitem保存到web指定目录下
	 * 
	 * @param sc
	 * @param fileitem
	 * @param path
	 * @param filename
	 * @return
	 */
	public static boolean save(ServletContext sc, FileItem fileitem,
			String path, String filename) {
		File dir = new File(sc.getRealPath("/") + path);// 构造临时对象
		if (!dir.exists()) {
			dir.mkdirs();
		}
		if (fileitem != null) {
			File file = new File(sc.getRealPath("/") + path, filename);
			try {
				fileitem.write(file);// 保存文件在服务器的物理磁盘中
				return true;
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		return false;
	}

	/**
	 * Java文件操作 获取文件扩展名,不包括"."
	 * 
	 * Created on: 2011-8-2 Author: blueeagle
	 */
	public static String getExtensionName(String filename) {
		if ((filename != null) && (filename.length() > 0)) {
			int dot = filename.lastIndexOf('.');
			if ((dot > -1) && (dot < (filename.length() - 1))) {
				return filename.substring(dot + 1);
			}
		}
		return filename;
	}
}
